package r_Inst;

import mips.Decoder;
import mips.PC;
import mips.Register;

public class Sltu {

	public static void sltu(int dest , int sc1 , int sc2)
	{
		if((Decoder.toBinary((Register.registers[sc1]))+"").charAt(0) == '1')
		{
			Register.registers[sc1] = Decoder.toInt("0"+Decoder.toBinary((Register.registers[sc1])));
		}
		if((Decoder.toBinary((Register.registers[sc2]))+"").charAt(0) == '1')
		{
			Register.registers[sc2] = Decoder.toInt("0"+Decoder.toBinary((Register.registers[sc1])));
		}
		if (Register.registers[sc1] < Register.registers[sc2]){
		Register.registers[dest] = 1;}
		else{
			Register.registers[dest] = 0;}
         
     System.out.println("PC value now is : " +Decoder.toBinary(PC.pc));  // add pc 
                
                System.out.println("PC value :"+ Decoder.toBinary(PC.pc)+" sent to The instruction memory to read address..");
                
                System.out.println("Instuction memory sending Instruction[25:21] : "+Decoder.AddzerostoLeft(Decoder.toBinary(sc1)+"",5)+" to Registers @ read Register1");
                System.out.println("Instuction memory sending Instruction[20:16]: "+Decoder.AddzerostoLeft(Decoder.toBinary(sc2)+"",5)+"  to Registers @ read Register2");
                
                System.out.println("Register number  read now is : " + Decoder.AddzerostoLeft(Decoder.toBinary(sc1)+"",5));
                System.out.println("Register2 number read now is : " + Decoder.AddzerostoLeft(Decoder.toBinary(sc2)+"",5));


                System.out.println("Instuction memory sending Instruction[15:11]: "+Decoder.AddzerostoLeft(Decoder.toBinary(dest)+"",5)+"  to mux and mux selection 1 occured and value forwarded to Registers @                    write Register" );
                System.out.println("Destination register  is : " + Decoder.AddzerostoLeft(Decoder.toBinary(dest)+"",5));


                System.out.println("Instuction memory sending Instruction[31:26] to CONTROL,Instruction[31:26] having : "+ "000000");
                System.out.println("CONTROL send ALUOP : 101011 to ALU CONTROL");
 
                System.out.println("Instuction memory sending Instruction[5:0] to ALU CONTROL");
                
                System.out.println("Registers sends first source value : "+ Decoder.toBinary(Register.registers[sc1]) + " Second Source value : " + Decoder.toBinary(Register.registers[sc2]) + "  to ALU");
                System.out.println("ALU is doing the SLTU operating now...");
                System.out.println("Result is ready :" + Decoder.toBinary(Register.registers[dest]));
                System.out.println("Sending to the mux...");
                System.out.println("Mux selection is 0,Alu result : "+ Decoder.toBinary(Register.registers[dest]) +" is sent now to the registers @ write data");
                System.out.println("Register : " +  Decoder.AddzerostoLeft(Decoder.toBinary(dest)+"",5) + ",have value now : " +Decoder.toBinary(Register.registers[dest]));
                
                System.out.println("PC value sent to Add");
                PC.pc +=4;
                System.out.println("pc value now is incremented by 4 and passed to the mux :"+Decoder.toBinary(PC.pc)+",selection 0 occured");
                System.out.println("Mux sent back to PC");
                System.out.println("New value of PC now is : " + Decoder.toBinary(PC.pc));//add pc
                System.out.println("Executing next Instruction....");      
	}
}
